package csw;

public class J16Ch05Printers {

	public static void main(String [] args){
		J16Printer p = new J16Printer( "중소기업","번들프린터", "USB2.0");
		System.out.println(p.toString());
		J16InkjetPrinter ip = new J16InkjetPrinter("휴렛페커드","잉크젯프린터", "USB3.0");
		System.out.println(ip.toString());
		
		J16PrinterService ps = new J16PrinterService();
		ps.print(p);
		ps.print(ip);
		
	}//main
}//class

class J16Printer{
	private String maker;
	private String model;
	private String interfaces;
	private int counts;
	private int remains;

	//생성자
public J16Printer(String maker,String model,String interfaces) {
	this.maker = maker;
	this.model = model;
	this.interfaces = interfaces;
}

public String getMaker() {
	return maker;
}

public void setMaker(String maker) {
	this.maker = maker;
}

public String getModel() {
	return model;
}

public void setModel(String model) {
	this.model = model;
}

public String getInterfaces() {
	return interfaces;
}

public void setInterfaces(String interfaces) {
	this.interfaces = interfaces;
}

public int getCounts() {
	return counts;
}

public void setCounts(int counts) {
	this.counts = counts;
}

public int getRemains() {
	return remains;
}

public void setRemains(int remains) {
	this.remains = remains;
}

@Override
public String toString() {
	String result = "";
	result +=maker +"/" + model + "/" + interfaces + "/" + counts + "/" + remains;
	return result;
	}
}

class J16InkjetPrinter extends
			J16Printer{
	//부모 클래스에 기본 생성자가 정의되지 않았기 때문에 
	//자식 클래스에서 따로 생성자를 정의해둬야 함
	public J16InkjetPrinter(String maker,String model,String interfaces){
				super(maker,model,interfaces);
				//super() - 부모 클래스의 생성자를 가리키는 말
				}

}


interface J16PrinterIService{
	void print(J16Printer p);
}//interface

class J16PrinterService implements J16PrinterIService{

	@Override
	public void print(J16Printer p) {
			String result = p.getModel() + "가 문서를 출력합니다";
			System.out.println(result);
	}//print
}//J16PrinterService
